<?php

class Juicios_PromesaController extends Zend_Controller_Action {

    private $_referenciasDao;
    private $_promesasDao;
    private $_flashMessenger;

    public function init() {

        $auth = Zend_Auth::getInstance();

        if ($auth->hasIdentity()) {
            if (!empty($auth->getIdentity()->id)) {
                $usuarioDao = new Doctrine_Model_UsuariosDoctrineDao();
                $this->view->usuario = $usuarioDao->obtenerPorId($auth->getIdentity()->id);
            }
        } else {
            $this->_helper->redirector('index', 'login', 'admin');
        }

        $this->_flashMessenger = $this->_helper->getHelper('Mensaje');

        /* Colores */
        $colores = array(
            '5b92d6' => array('5b92d6', '8fbaef'), //azul
            'd6d65b' => array('d6d65b', 'bfbf3f'), //amarillo
            '51ad56' => array('51ad56', '73be78'), //verde
            'db6f70' => array('db6f70', 'e59899'), //rojo
            '5e71a0' => array('5e71a0', '8e9cbc'), //azul oscuro
            'd68e5b' => array('d68e5b', 'e8a97c'), //naranja
            '92989f' => array('92989f', 'bbbec3')); //gris
        $this->view->colorSucursal = $colores[$this->view->usuario->getSucursal()->getColor()];
        /* Colores */

        $this->_session = new Zend_Session_Namespace('tema');

        if ($this->_session->tema) {
            $this->view->logo = 'logoVerde.jpg';
            $this->view->colorFondo = '#4D9473';
            $this->view->colorFuente = '#FFF';
            $this->view->colorFuenteContenido = '#000';
            $this->view->colorContenido = '#C6DC94';
            $this->view->colorMenu = 'navbar-inverse';
            $this->view->colorFondoMenuLateral = '#DFDFDF';
        } else {
            $this->view->logo = 'logoBlanco.jpg';
        }

        $this->_personaDao = new Doctrine_Model_PersonaDao();
        $this->_referenciasDao = new Doctrine_Model_ReferenciasDoctrineDao();
        $this->_promesasDao = new Doctrine_Model_PromesasDao();
    }

    public function indexAction() {
        
    }

    public function registrarAction() {
        $this->_helper->layout()->setLayout("layout_pagos");

        $promesa = new Doctrine_Model_Entities_PromesaJuicio();
        $juicio_id = $this->getRequest()->getParam("juicio_id");

        if ($this->getRequest()->isPost()) {
            $id = $this->getRequest()->getParam("id");
            $comentario = $this->getRequest()->getParam("comentario");

            $pendienteDeCobro = $this->getRequest()->getParam("juicio_de_cobro", 0);
            $pedirSaldo = $this->getRequest()->getParam("pedir_saldo", 0);
            $fecha_promesa = str_replace("/", "-", $this->getRequest()->getParam("fecha_promesa"));

            $juicio = $this->_referenciasDao->obtenerPorId("Doctrine_Model_Entities_Juicio", $juicio_id);
            $usuario = $this->_referenciasDao->obtenerPorId("Doctrine_Model_Entities_Usuario", $this->view->usuario->getId());
            if ($fecha_promesa) {
                $fecha_promesa = new Datetime($fecha_promesa, new DateTimeZone('UTC'));
                $promesa->setFechaPromesa($fecha_promesa);
            }

            $ultimaPromesa = $juicio->obtenerUltimaPromesa();
            $valido = true;
            if ($ultimaPromesa) {
                if ($ultimaPromesa->getFechaPromesa() > $fecha_promesa) {
                    $valido = false;
                    $this->_flashMessenger->addError("Error al registrar la promesa, no se puede agregar una promesa con la fecha anterior a la ultima promesa");
                } 
            }

            if ($valido) {
                $fecha = new Datetime('now');
                $promesa->setFecha($fecha);

                if (!empty($id)) :
                    /* EDITAR */
                    $promesa = $this->_referenciasDao->obtenerPorId("Doctrine_Model_Entities_PromesaJuicio", $id);
                endif;

                $promesa->setComentario($comentario);
                $promesa->setJuicio($juicio);
                $promesa->setUsuario($usuario);
                $promesa->setPendienteDeCobro($pendienteDeCobro);
                $promesa->setPedirSaldo($pedirSaldo);


                if (empty($id)) {

                    if ($this->_referenciasDao->guardar($promesa)) {
                        $this->_flashMessenger->addMessage(array("success" => "promesa registrada correctamente"));
                    } else {

                        $this->_flashMessenger->addMessage(array("error" => "Error al registrar la promesa"));
                    }
                } else {
                    if ($this->_referenciasDao->guardar($unTipoInforme)) {
                        $this->_flashMessenger->addSuccess("Actualizado");
                    }
                }
            }
        } else {
            $id = $this->getRequest()->getParam("id");
            $accion = $this->getRequest()->getParam("accion");
            if ($id) :
                $promesa = $this->_referenciasDao->obtenerPorId("Doctrine_Model_Entities_PromesaJuicio", $id);
                if ($promesa && $accion == "eliminar") :
                    $this->_referenciasDao->eliminar("Doctrine_Model_Entities_PromesaJuicio", $promesa);

                    $promesa = new Doctrine_Model_Entities_PromesaJuicio();

                endif;
            endif;
        }

        if ($juicio_id) {
            $this->view->promesas = $this->_promesasDao->obtenerTodasPorJuicio($juicio_id);
        }

        $this->view->promesa = $promesa;
        $this->view->juicio_id = $juicio_id;
        $this->view->mensaje = $this->_flashMessenger->getCurrentMessages();
    }

}
